/*

javascript
1). 语言基础
  1. 声明变量 let, const, var, import, function, class,
  2. 变量类型
    基础：string，number，boolean，null，undefined
    引用：object，function，array
  3. 操作符: + - * / ** %, != !== > < >= <= ==(转换数据类型) ===(严格等于), Object.is()
    += -= *=...
    && || !
    字符串 -> 数字 '1' -> 1
    显式转换 | 强制：Number(str), +str, parseInt(str), parseFloat(str)
    隐式转换：str * 1
    数字 -> 字符串 1 -> '1'
    String(1) // "1"
    Boolean(1) // true
  4. Math, new Date()
  5. 字符串方法：'hello', "", `${var}`, slice, substr, substring
  6. 数组方法：...map, forEach, ....
  7. 对象 in
     for in 对象
     for of 数组
  8. function
  9. 分支 if () {} else if (){} else {}, switch() { case: }, 条件 ? true : false
  10. 循环 for(), while(){}, do {} while()

2). DOM
  增，删，改，查
  标签:
    查：ele.getElement*(), ele.querySelector*(), 遍历
    改：innerHTML, innerText, textContext, value
    增：creatElement(), 插入
    删：remove()
  属性:
    查：ele.prop, ele.getAttribute()
    增,改：ele.prop = val, ele.setAttribute(prop, val)
    删：ele.removeAttribute(prop)
    ele.hasAttribute(prop)
  类名：className, classList.add / ...
  CSS：.style.prop =
  CSS：.style.cssText = ""
  getComputedStyle()
  获取尺寸
  事件：鼠标事件，键盘，表单事件
  .on***
  addEventLister
  removeEventLister
  阻止冒泡、阻止默认事件
  事件委托

3). BOM
  location
  history
  navigator

  alert().....
  setInterval(), setTimeout()
  cookie
  localStorage
  sessionStorage

Ajax
  let xhr = new XMLHttpRequest()
  xhr.open(method, url)
  xhr.send(data)
  xhr.onReadyStateChange =
  http state
    200
    3xx
    4xx
    5xx

jQuery & Zepto
  $(选择器).行为()

*/

// let str = '' "" ``
